﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Interfaces; // Brug vores class library "Interfaces"

namespace Model
{
    public class ClsGrandPrixCollection
    {
        // Attributter
        ClsGrandPrix nytGrandPrix;
        List<ClsGrandPrix> listGrandPrix;

        public ClsGrandPrixCollection()
        {
            listGrandPrix = new List<ClsGrandPrix>();
        }

        // Opret nyt Grand Prix i model (instansiere) og lig i listen
        public void DownloadGrandPrixFraDB(int grandPrixNummer, string land, string baneNavn, DateTime grandPrixDatoTid, ClsKoerere joker, bool afviklet, int autoSatsKoere1, int autoSatsKoere2)
        {
            nytGrandPrix = new ClsGrandPrix(grandPrixNummer, land, baneNavn, grandPrixDatoTid, joker, afviklet, autoSatsKoere1, autoSatsKoere2);
            listGrandPrix.Add(nytGrandPrix);
        }

        public List<ClsGrandPrix> ListGrandPrix
        {
            get { return listGrandPrix; }
        }

        // Metode til at hente liste med interfaceobjekter 
        public List<IClsGrandPrix> GetGrandPrix()
        {
            List<IClsGrandPrix> grandPrix = new List<IClsGrandPrix>();

            foreach (var item in listGrandPrix)
            {
                grandPrix.Add((IClsGrandPrix)item);
            }

            return grandPrix;
        }
        
        // Metode til at hænte næste ikke afviklet Grand Prix hvor dato er før i dag (computerens tid)
        public IClsGrandPrix GetNaesteGrandPrix()
        {
            for (int i = 0; i < listGrandPrix.Count; i++)
            {

                if (listGrandPrix[i].Afviklet == false && listGrandPrix[i].GrandPrixDatoTid > DateTime.Today)
                {
                    return (IClsGrandPrix) listGrandPrix[i];
                }
            }

            return null;
        }
    }
}
